/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyecto;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import Congresos.Congreso;
import java.util.Calendar;
import persona.Ponente;
import persona.Autor;
import persona.Revisor;
import persona.Presidente;
import Congresos.Trabajo;
import java.util.Iterator;
import java.util.Enumeration;
import congresos.ICongreso;
/**
 *
 * @author Conchi
 */
public class Menu{
    public Menu(ICongreso congreso){
        
        Scanner sc = new Scanner(System.in);
        boolean menuActivo = true;
        int opcion;
        while (menuActivo) {
            System.out.println("--------- Menu ----------");
            System.out.println("1 - Dar alta ponente");
            System.out.println("2 - Logearse ponente");
            System.out.println("3 - Dar alta revisor");
            System.out.println("4 - Logearse revisor");
            System.out.println("5 - Dar alta presidente");
            System.out.println("6 - Logearse presidente");
            System.out.println("7 - Salir");
            System.out.print("Introduzca una opcion: ");
            opcion = sc.nextInt();

            switch (opcion) {
                case 1:
                    seleccionOpcion1(congreso);
                    break;
                case 2:
                    seleccionOpcion2(congreso);
                    break;
                case 3:
                    seleccionOpcion3(congreso);
                    break;
                case 4:
                    seleccionOpcion4(congreso);
                    break;
                case 5:
                    seleccionOpcion5(congreso);
                    break;
                case 6:
                    seleccionOpcion6(congreso);
                    break;
                case 7:
                    escrituraObjeto(congreso);
                    menuActivo = false;
                    break;
            }
        }
    }

    /**
     * Los métodos de la clase principal en la que está el método main tienen
     * que ser necesariamente estáticos porque esa función es estática.
     *
     * @param texto
     */
    public void seleccionOpcion3(ICongreso congreso) {
        System.out.println("Introduce el nombre del revisor");
        Scanner sc = new Scanner(System.in);
        String nombre = sc.nextLine();
        System.out.println("Introduce el dni del revisor");
        sc = new Scanner(System.in);
        String dni = sc.nextLine();
        System.out.println("Introduce la pasword del revisor");
        sc = new Scanner(System.in);
        String pasword = sc.nextLine();
        System.out.println("Introduce la direccion del revisor");
        sc = new Scanner(System.in);
        String direccion = sc.nextLine();
        System.out.println("Introduce la afiliacion del revisor");
        sc = new Scanner(System.in);
        String afiliacion = sc.nextLine();
        System.out.println("Introduce el correo electronico del revisor");
        sc = new Scanner(System.in);
        String email = sc.nextLine();

        Revisor revisor = new Revisor(nombre, dni, pasword, afiliacion, direccion, email);

        System.out.println("Introduce las tematicas a las cuales pertenece el revisor");

        String tematica = "";
        String subtematica = "";
        String subtematica1 = "";
        String subtematica2 = "";
        String subtematica3 = "";
        ArrayList<String> subtematicaFinal = new ArrayList<String>();


        boolean chequeo2 = false;
        int contador2 = 0;
        while (chequeo2 == false) {



            boolean chequeo = false;
            while (chequeo == false) {
                System.out.println("seleccione un 1 si se trata de arquitectura");
                System.out.println("seleccione un 2 si se trata de inteligencia artificial");
                System.out.println("seleccione un 3 si se trata de ingenieria del software");
                sc = new Scanner(System.in);
                int valor = sc.nextInt();

                switch (valor) {
                    case 1:
                        tematica = "arquitectura";
                        subtematica = "seleccione un 1 si se trata de computadores\nseleccione un 2 si se trata de software\nseleccione un 3 si se trata de hardware";
                        subtematica1 = "computadores";
                        subtematica2 = "software";
                        subtematica3 = "hardware";
                        chequeo = true;
                        break;
                    case 2:
                        tematica = "inteligencia artificial";
                        subtematica = "seleccione un 1 si se trata de robotica\nseleccione un 2 si se trata de computacion\nseleccione un 3 si se trata de espacio";
                        subtematica1 = "robotica";
                        subtematica2 = "computacion";
                        subtematica3 = "espacio";
                        chequeo = true;
                        break;
                    case 3:
                        tematica = "ingenieria del software";
                        subtematica = "seleccione un 1 si se trata de gestion\nseleccione un 2 si se trata de redes\nseleccione un 3 si se trata de sistemas";
                        subtematica1 = "gestion";
                        subtematica2 = "redes";
                        subtematica3 = "sistemas";
                        chequeo = true;
                        break;
                    default:
                        System.out.println("Opcion incorrecta");
                }
            }
            contador2++;
            revisor.setTematica(tematica);

            System.out.println("Introduce las subTematicas a las cuales pertenece el revisor");
            chequeo = false;
            int contador = 0;
            while (chequeo == false) {
                System.out.println(subtematica);
                sc = new Scanner(System.in);
                int valor2 = sc.nextInt();
                switch (valor2) {
                    case 1:
                        subtematicaFinal.add(subtematica1);
                        contador++;
                        break;
                    case 2:
                        subtematicaFinal.add(subtematica2);
                        contador++;
                        break;
                    case 3:
                        subtematicaFinal.add(subtematica3);
                        contador++;
                        break;
                    default:
                        System.out.println("Opcion incorrecta");
                }
                if (contador <= 2) {
                    System.out.println("Pulse 1 si desea introducir mas subtematicas sino pulse 0");
                    sc = new Scanner(System.in);
                    int opcion = sc.nextInt();
                    if (opcion != 1) {
                        chequeo = true;
                    }
                } else {
                    chequeo = true;
                }
            }
            revisor.setSubTematica(subtematicaFinal);
            if (contador2 <= 2) {
                System.out.println("Pulse 1 si desea introducir otra tematica con sus subtematicas sino pulse 0");
                sc = new Scanner(System.in);
                int opcion = sc.nextInt();
                if (opcion != 1) {
                    chequeo2 = true;
                }
            } else {
                chequeo2 = true;
            }
        }
        congreso.darAltaRevisor(revisor);
    }

    public void seleccionOpcion1(ICongreso congreso) {
        System.out.println("Introduce el nombre del ponente");
        Scanner sc = new Scanner(System.in);
        String nombre = sc.nextLine();
        System.out.println("Introduce el dni del ponente");
        sc = new Scanner(System.in);
        String dni = sc.nextLine();
        System.out.println("Introduce la pasword del ponente");
        sc = new Scanner(System.in);
        String pasword = sc.nextLine();
        System.out.println("Introduce la direccion del ponente");
        sc = new Scanner(System.in);
        String direccion = sc.nextLine();
        System.out.println("Introduce la afiliacion del ponente");
        sc = new Scanner(System.in);
        String afiliacion = sc.nextLine();
        System.out.println("Introduce el correo electronico del ponente");
        sc = new Scanner(System.in);
        String email = sc.nextLine();
        congreso.darAltaPonente(nombre, dni, pasword, afiliacion, direccion, email);



    }

    public void seleccionOpcion5(ICongreso congreso) {
        if (congreso.getPresidente() == null) {
            System.out.println("Introduce el nombre del presidente");
            Scanner sc = new Scanner(System.in);
            String nombre = sc.nextLine();
            System.out.println("Introduce el dni del presidente");
            sc = new Scanner(System.in);
            String dni = sc.nextLine();
            System.out.println("Introduce la pasword del presidente");
            sc = new Scanner(System.in);
            String pasword = sc.nextLine();
            System.out.println("Introduce la direccion del presidente");
            sc = new Scanner(System.in);
            String direccion = sc.nextLine();
            System.out.println("Introduce la afiliacion del presidente");
            sc = new Scanner(System.in);
            String afiliacion = sc.nextLine();
            System.out.println("Introduce el correo electronico del presidente");
            sc = new Scanner(System.in);
            String email = sc.nextLine();
            Presidente presidente = new Presidente(nombre, dni, pasword, afiliacion, direccion, email);
            congreso.setPresidente(presidente);
        } else {
            System.out.println("Ya existe un presidente para dicho congreso");
        }

    }

    public void menuPonente(ICongreso congreso, Ponente ponente) {
        Scanner sc = new Scanner(System.in);
        Scanner sc1 = new Scanner(System.in);
        boolean menuActivo = true;
        int opcion;
        while (menuActivo) {
            System.out.println("--------- Menu ----------");
            System.out.println("1 - Dar alta trabajo");
            System.out.println("2 - Listar trabajos totales ");
            System.out.println("3 - Listar trabajos segun su id");
            System.out.println("4 - Modificar el archivo del trabajo");
            System.out.println("5 - Modificar las caracteristicas del trabajo");
            System.out.println("6 - Dar baja el trabajo");
            System.out.println("7 - Volver");
            System.out.print("Introduzca una opcion: ");
            opcion = sc.nextInt();

            switch (opcion) {
                case 1:
                    System.out.println("Introduce el titulo del trabajo");
                    sc1 = new Scanner(System.in);
                    String titulo = sc1.nextLine();
                    System.out.println("Introduce el resumen del trabajo");
                    sc1 = new Scanner(System.in);
                    String resumen = sc1.nextLine();
                    System.out.println("Introduce el fichero del trabajo");
                    sc1 = new Scanner(System.in);
                    String fichero = sc1.nextLine();
                    String subtema = null;
                    String tematica = null;
                    boolean menuActivo1 = true;
                    while (menuActivo1) {
                        System.out.println("Introduce la tematica del trabajo");
                        System.out.println("seleccion un 1 si se trata de arquitectura");
                        System.out.println("seleccion un 2 si se trata de inteligencia artificial");
                        System.out.println("seleccion un 3 si se trata de ingenieria del software");
                        sc1 = new Scanner(System.in);
                        int opcion1 = sc1.nextInt();

                        switch (opcion1) {
                            case 1:
                                tematica = "arquitectura";
                                subtema = "Las subtematicas pueden ser computadores, software,hardware";
                                menuActivo1 = false;
                                break;
                            case 2:
                                tematica = "inteligencia artificial";
                                subtema = "Las subtematicas pueden ser robotica,computacion,espacio";
                                menuActivo1 = false;
                                break;
                            case 3:
                                tematica = "ingenieria del software";
                                subtema = "Las subtematicas pueden ser gestion,redes,sistemas";
                                menuActivo1 = false;
                                break;
                            default:
                                System.out.println("Opcion incorrecta");
                        }
                    }
                    ArrayList<String> subtematicas = new ArrayList<String>();
                    int chequeo = 1;
                    int contador = 0;
                    while (chequeo != 0) {
                        System.out.println("Introduce la subtematica del trabajo");
                        System.out.println(subtema);
                        sc1 = new Scanner(System.in);
                        subtematicas.add(sc1.nextLine());
                        contador++;
                        if (contador == 2) {
                            System.out.println("Si desea finalizar la inserccion de subtematicas pulse el 0 si no pulse 1");
                            sc1 = new Scanner(System.in);
                            chequeo = sc1.nextInt();
                        } else if (contador > 2) {
                            chequeo = 0;
                        }

                    }
                    System.out.println("Introduce los autores");
                    int opcion2 = 1;
                    ArrayList<Autor> autores = new ArrayList<Autor>();
                    while (opcion2 != 0) {
                        System.out.println("Introduzca el nombre del autor");
                        sc1 = new Scanner(System.in);
                        String nombreAutor = sc1.nextLine();
                        System.out.println("Introduzca el dni del autor");
                        sc1 = new Scanner(System.in);
                        String dniAutor = sc1.nextLine();
                        System.out.println("Introduzca el email del autor");
                        sc1 = new Scanner(System.in);
                        String emailAutor = sc1.nextLine();
                        System.out.println("Introduzca la direccion del autor");
                        sc1 = new Scanner(System.in);
                        String direccionAutor = sc1.nextLine();
                        System.out.println("Introduzca la afiliacion del autor");
                        sc1 = new Scanner(System.in);
                        String afiliacionAutor = sc1.nextLine();
                        Autor autor = new Autor(nombreAutor, afiliacionAutor, direccionAutor, emailAutor, dniAutor);
                        autores.add(autor);
                        System.out.println("Si desea finalizar la inserccion de autores pulse el 0 sino pulse 1");
                        sc1 = new Scanner(System.in);
                        opcion2 = sc1.nextInt();
                    }
                    Trabajo trabajo = new Trabajo(titulo, resumen, fichero, autores, tematica, subtematicas);
                    ponente.darAltaTrabajo(trabajo);
                    break;
                case 2:
                    ponente.obtenerTrabajos();

                    break;
                case 3:
                    System.out.println("Introduzca el id del trabajo");
                    sc1 = new Scanner(System.in);
                    int id = sc1.nextInt();
                    ponente.obtenerTrabajos(id);
                    break;
                case 4:
                    System.out.println("Introduzca el titulo del trabajo ");
                    sc1 = new Scanner(System.in);
                    titulo = sc1.nextLine();
                    System.out.println("Introduzca el archivo del trabajo en formato .txt");
                    sc1 = new Scanner(System.in);
                    fichero = sc1.nextLine();
                    ponente.modificarContenidoTrabajo(titulo, fichero);
                    break;
                case 5:
                    System.out.println("Introduzca el titulo del trabajo ");
                    sc1 = new Scanner(System.in);
                    String tituloTrabajo = sc1.nextLine();
                    chequeo = 0;
                    Trabajo trabajo1 = new Trabajo("");
                    ArrayList<Trabajo> trabajos = new ArrayList<Trabajo>();
                    trabajos = ponente.getTrabajos();
                    for (int i = 0; i < trabajos.size(); i++) {
                        if (trabajos.get(i).getTitulo().equals(tituloTrabajo)) {
                            trabajo1 = new Trabajo(trabajos.get(i).getTitulo(), trabajos.get(i).getResumen(), trabajos.get(i).getFichero(), trabajos.get(i).getUsuarios(), trabajos.get(i).getTematica(), trabajos.get(i).getSubTematicas());
                            chequeo = 1;
                            break;
                        }
                    }

                    if (chequeo == 1) {
                        menuActivo1 = true;
                        while (menuActivo1) {
                            System.out.println("Que caracteristicas desea modificar");
                            System.out.println("1 - Titulo");
                            System.out.println("2 - Resumen ");
                            System.out.println("3 - Tematica y subtematicas");
                            System.out.println("4 - Añadir Usuarios");
                            System.out.println("5 - Salir");
                            System.out.print("Introduzca una opcion: ");
                            opcion = sc.nextInt();

                            switch (opcion) {
                                case 1:
                                    System.out.println("Introduzca el titulo del trabajo ");
                                    sc1 = new Scanner(System.in);
                                    String titulo2 = sc1.nextLine();
                                    trabajo1.setTitulo(titulo2);
                                    break;
                                case 2:
                                    System.out.println("Introduzca el Resumen del trabajo ");
                                    sc1 = new Scanner(System.in);
                                    resumen = sc1.nextLine();
                                    trabajo1.setResumen(resumen);
                                    break;
                                case 3:

                                    boolean menuActivo3 = true;
                                    while (menuActivo3) {
                                        System.out.println("Introduce la tematica del trabajo");
                                        System.out.println("seleccion un 1 si se trata de arquitectura");
                                        System.out.println("seleccion un 2 si se trata de inteligencia artificial");
                                        System.out.println("seleccion un 3 si se trata de ingenieria del software");
                                        System.out.println("Volver atras");
                                        sc1 = new Scanner(System.in);
                                        int opcion1 = sc1.nextInt();
                                        boolean menuActivo2 = true;
                                        // ArrayList<String> subtemas = new ArrayList<String>();
                                        switch (opcion1) {
                                            case 1:
                                                trabajo1.setTematica("arquitectura");
                                                subtema = "Las subtematicas pueden ser computadores, software,hardware";

                                                trabajo1.setSubTematicas();
                                                while (menuActivo2) {
                                                    System.out.println(subtema);
                                                    System.out.println("seleccion un 1 si es experto en computadores");
                                                    System.out.println("seleccion un 2 si es experto en software");
                                                    System.out.println("seleccion un 3 si es experto en hardware ");
                                                    sc1 = new Scanner(System.in);
                                                    int opcion3 = sc1.nextInt();
                                                    switch (opcion3) {
                                                        case 1:
                                                            trabajo1.setSubTematicas("computadores");
                                                            break;
                                                        case 2:
                                                            trabajo1.setSubTematicas("software");
                                                            break;
                                                        case 3:
                                                            trabajo1.setSubTematicas("hardware");
                                                            break;
                                                        default:
                                                            System.out.println("Opcion incorrecta");
                                                    }
                                                    if (trabajo1.getSubTematicas().size() == 2) {
                                                        System.out.println("Para finalizar la actualizacion de los subtematicas pulse 0 sino pulse 1");
                                                        sc1 = new Scanner(System.in);
                                                        opcion2 = sc1.nextInt();
                                                        if (opcion2 == 0) {
                                                            menuActivo2 = false;
                                                        }
                                                    } else if (trabajo1.getSubTematicas().size() > 2) {
                                                        menuActivo2 = false;
                                                    }

                                                }
                                                menuActivo3 = false;
                                                break;
                                            case 2:
                                                trabajo1.setTematica("inteligencia artificial");

                                                trabajo1.setSubTematicas();
                                                subtema = "Las subtematicas pueden ser robotica,computacion,espacio";
                                                while (menuActivo2) {
                                                    System.out.println(subtema);
                                                    System.out.println("seleccion un 1 si es experto en robotica");
                                                    System.out.println("seleccion un 2 si es experto en computacion");
                                                    System.out.println("seleccion un 3 si es experto en espacio ");
                                                    sc1 = new Scanner(System.in);
                                                    int opcion3 = sc1.nextInt();
                                                    switch (opcion3) {
                                                        case 1:
                                                            trabajo1.setSubTematicas("robotica");
                                                            break;
                                                        case 2:
                                                            trabajo1.setSubTematicas("computacion");
                                                            break;
                                                        case 3:
                                                            trabajo1.setSubTematicas("espacio");
                                                            break;
                                                        default:
                                                            System.out.println("Opcion incorrecta");
                                                    }
                                                    if (trabajo1.getSubTematicas().size() == 2) {
                                                        System.out.println("Para finalizar la actualizacion de los subtematicas pulse 0 sino pulse 1");
                                                        sc1 = new Scanner(System.in);
                                                        opcion2 = sc1.nextInt();
                                                        if (opcion2 == 0) {
                                                            menuActivo2 = false;
                                                        }
                                                    } else if (trabajo1.getSubTematicas().size() > 2) {
                                                        menuActivo2 = false;
                                                    }

                                                }
                                                menuActivo3 = false;
                                                break;
                                            case 3:
                                                trabajo1.setTematica("ingenieria del software");
                                                trabajo1.setSubTematicas();
                                                subtema = "Las subtematicas pueden ser gestion,redes,sistemas";
                                                while (menuActivo2) {
                                                    System.out.println(subtema);
                                                    System.out.println("seleccion un 1 si es experto en gestion");
                                                    System.out.println("seleccion un 2 si es experto en redes");
                                                    System.out.println("seleccion un 3 si es experto en sistemas ");
                                                    sc1 = new Scanner(System.in);
                                                    int opcion3 = sc1.nextInt();
                                                    switch (opcion3) {
                                                        case 1:
                                                            trabajo1.setSubTematicas("gestion");
                                                            break;
                                                        case 2:
                                                            trabajo1.setSubTematicas("redes");
                                                            break;
                                                        case 3:
                                                            trabajo1.setSubTematicas("sistemas");
                                                            break;
                                                        default:
                                                            System.out.println("Opcion incorrecta");
                                                    }
                                                    if (trabajo1.getSubTematicas().size() == 2) {
                                                        System.out.println("Para finalizar la actualizacion de los subtematicas pulse 0 sino pulse 1");
                                                        sc1 = new Scanner(System.in);
                                                        opcion2 = sc1.nextInt();
                                                        if (opcion2 == 0) {
                                                            menuActivo2 = false;
                                                        }
                                                    } else if (trabajo1.getSubTematicas().size() > 2) {
                                                        menuActivo2 = false;
                                                    }

                                                }

                                                menuActivo3 = false;
                                                break;
                                            default:
                                                System.out.println("Opcion incorrecta");
                                        }
                                    }
                                    break;
                                case 4:
                                    System.out.println("Introduce los autores");
                                    opcion2 = 1;
                                    ArrayList<Autor> autores1 = new ArrayList<Autor>();
                                    while (opcion2 != 0) {
                                        System.out.println("Introduzca el nombre del autor");
                                        sc1 = new Scanner(System.in);
                                        String nombreAutor = sc1.nextLine();
                                        System.out.println("Introduzca el dni del autor");
                                        sc1 = new Scanner(System.in);
                                        String dniAutor = sc1.nextLine();
                                        System.out.println("Introduzca el email del autor");
                                        sc1 = new Scanner(System.in);
                                        String emailAutor = sc1.nextLine();
                                        System.out.println("Introduzca la direccion del autor");
                                        sc1 = new Scanner(System.in);
                                        String direccionAutor = sc1.nextLine();
                                        System.out.println("Introduzca la afiliacion del autor");
                                        sc1 = new Scanner(System.in);
                                        String afiliacionAutor = sc1.nextLine();
                                        Autor autor1 = new Autor(nombreAutor, afiliacionAutor, direccionAutor, emailAutor, dniAutor);
                                        autores1.add(autor1);
                                        System.out.println("Si desea finalizar la inserccion de autores pulse el 0 sino pulse 1");
                                        sc1 = new Scanner(System.in);
                                        opcion2 = sc1.nextInt();
                                    }
                                    trabajo1.setUsuarios(autores1);
                                    break;
                                case 5:
                                    Trabajo trabajo4 = new Trabajo(trabajo1.getTitulo(), trabajo1.getResumen(), trabajo1.getFichero(), trabajo1.getUsuarios(), trabajo1.getTematica(), trabajo1.getSubTematicas());
                                    ponente.modificarContenidoTrabajo(trabajo4, tituloTrabajo);
                                    menuActivo1 = false;
                                    break;
                                default:
                                    System.out.println("Opcion incorrecta");

                            }
                        }
                    } else {
                        System.out.println("El titulo es incorrecto");
                    }

                    break;


                case 6:
                    ponente.darBajaTrabajo();
                    break;
                case 7:
                    menuActivo = false;
                    break;
            }


        }
    }

    public void menuRevisor(ICongreso congreso, Revisor revisor) {
        Scanner sc = new Scanner(System.in);
        boolean menuActivo = true;
        int opcion;
        while (menuActivo) {
            System.out.println("--------- Menu ----------");
            System.out.println("1 - Obtener trabajos segun la tematica");
            System.out.println("2 - Obtener todos los trabajos");
            System.out.println("3 - Asignar nota a trabajo");
            System.out.println("4 - Volver");
            System.out.print("Introduzca una opcion: ");
            opcion = sc.nextInt();

            switch (opcion) {
                case 1:
                    System.out.println("Introduzca la tematica del trabajo");
                    sc = new Scanner(System.in);
                    String tematica = sc.nextLine();
                    revisor.obtenerTrabajos(tematica);

                    break;
                case 2:
                    revisor.obtenerTrabajos();
                    break;
                case 3:
                    ArrayList<Trabajo> trabajos = revisor.getTrabajoCorreguir();
                   if(trabajos.size()>0){
                    int numero = trabajos.size() + 1;
                    float nota = 0;
                    boolean chequeo4 = true;
                    while (numero > trabajos.size()) {
                        for (int i = 0; i < trabajos.size(); i++) {
                            System.out.println("Pulse un " + i + " si quiere asignar una nota al trabajo con titulo " + trabajos.get(i).getTitulo());
                        }
                        sc = new Scanner(System.in);
                        numero = sc.nextInt();
                    }

                    while (chequeo4) {
                        System.out.println("Seleccione la nota que desea ponerle al trabajo");

                        System.out.println("Pulse 1 para marcar el trabajo como rechazado");
                        System.out.println("Pulse 2 para marcar el trabajo como rechazado con dudas");
                        System.out.println("Pulse 3 para marcar el trabajo como recomendado");
                        System.out.println("Pulse 4 para marcar el trabajo como aceptado con dudas");
                        System.out.println("Pulse 5 para marcar el trabajo como aceptado");
                        int opcion2 = sc.nextInt();
                        switch (opcion2) {
                            case 1:
                                nota = 1;
                                chequeo4 = false;
                                break;
                            case 2:
                                nota = 2;
                                chequeo4 = false;
                                break;
                            case 3:
                                nota = 3;
                                chequeo4 = false;
                                break;
                            case 4:
                                nota = 4;
                                chequeo4 = false;
                                break;
                            case 5:
                                nota = 5;
                                chequeo4 = false;
                                break;
                            default:
                                System.out.println("Opcion incorrecta");

                        }
                    }
                    revisor.asignarNotaTrabajo(trabajos.get(numero), nota);
                   }
                   else{
                       System.out.println("El revisor no tiene trabajos asignados");
                   }
                    break;
                case 4:
                    menuActivo = false;
                    break;
                default:
                    System.out.println("Opcion incorrecta");
            }
        }
    }

    public void menuPresidente(ICongreso congreso, Presidente presidente) {
        Scanner sc = new Scanner(System.in);
        int dia = 1;
        int mes = 1;
        int anho = 2011;
        boolean menuActivo = true;
        int opcion;
        while (menuActivo) {
            System.out.println("--------- Menu ----------");
            System.out.println("1 - Consultar los trabajos por autor");
            System.out.println("2 - Consultar los trabajos segun la tematica o la subtematica");
            System.out.println("3 - Consultar todos los trabajos que contengan una palabra");
            System.out.println("4 - Asignar los trabajos automaticamente a los revisores");
            System.out.println("5 - Obtener todos los revisores del congreso");
            System.out.println("6 - Obtener todos los ponentes del congreso");
            System.out.println("7 - Modificar la fecha limite para el envio de trabajos");
            System.out.println("8 - Modificar la fecha limite para la revision de trabajos");
            System.out.println("9 - Asignacion manual de los trabajos");
            System.out.println("10 - Volver");
            System.out.print("Introduzca una opcion: ");
            opcion = sc.nextInt();
            switch (opcion) {
                case 1:
                    System.out.println("Introduzca el nombre del autor");
                    sc = new Scanner(System.in);
                    String nombre = sc.nextLine();
                    System.out.println("Introduzca el dni del autor");
                    sc = new Scanner(System.in);
                    String dni = sc.nextLine();
                    Autor autor = new Autor(nombre, dni);
                    presidente.obtenerTrabajos(autor);
                    break;
                case 2:
                    System.out.println("Introduzca la tematica o subtematica");
                    sc = new Scanner(System.in);
                    String tematica = sc.nextLine();
                    presidente.obtenerTrabajos(tematica);
                    break;
                case 3:
                    boolean entra = true;
                    ArrayList<String> palabras = new ArrayList<String>();
                    System.out.println("Introduzca la palabra");
                    sc = new Scanner(System.in);
                    String palabra = sc.nextLine();
                    palabras.add(palabra);
                    while (entra) {
                        System.out.println("Si desea introducir otra palabra pulse 1 sino pulse 0");
                        sc = new Scanner(System.in);
                        int sale = sc.nextInt();
                        if (sale == 1) {
                            System.out.println("Introduzca la palabra");
                            sc = new Scanner(System.in);
                            palabra = sc.nextLine();
                            palabras.add(palabra);
                        } else {
                            entra = false;
                        }
                       
                    } 
                    presidente.obtenerTrabajosResumen(palabras);
                    break;
                case 4:
                    presidente.asignarTrabajosRevisores();
                    break;
                case 5:
                    presidente.obtenerRevisores();
                    break;
                case 6:
                    presidente.obtenerPonentes();
                    break;
                case 7:
                    dia = 0;
                    mes = 0;
                    anho = 0;
                    while (dia < 1 || dia > 31) {
                        System.out.println("Introduzca dia");
                        sc = new Scanner(System.in);
                        dia = sc.nextInt();
                    }
                    while (mes < 1 || mes > 12) {
                        System.out.println("Introduzca mes");
                        sc = new Scanner(System.in);
                        mes = sc.nextInt();
                    }
                    while (anho < 2011 || anho > 2013) {
                        System.out.println("Introduzca año");
                        sc = new Scanner(System.in);
                        anho = sc.nextInt();
                    }
                    GregorianCalendar fechaModificacionPonente = new GregorianCalendar(anho, mes - 1, dia);
                    presidente.setFechaPonente(fechaModificacionPonente);
                    break;
                case 8:
                    dia = 0;
                    mes = 0;
                    anho = 0;
                    while (dia < 1 || dia > 31) {
                        System.out.println("Introduzca dia");
                        sc = new Scanner(System.in);
                        dia = sc.nextInt();
                    }
                    while (mes < 1 || mes > 12) {
                        System.out.println("Introduzca mes");
                        sc = new Scanner(System.in);
                        mes = sc.nextInt();
                    }
                    while (anho < 2011 || anho > 2013) {
                        System.out.println("Introduzca año");
                        sc = new Scanner(System.in);
                        anho = sc.nextInt();
                    }
                    GregorianCalendar fechaModificacionRevisor = new GregorianCalendar(anho, mes - 1, dia);
                    presidente.setFechaRevisor(fechaModificacionRevisor);
                    break;

                case 9:
                    System.out.println("Lista de los trabajos sin todas las notas");
                    ArrayList<Trabajo> trabajoSinNotas = congreso.ObtenerTrabajosSinNota();
                    int Opcion = trabajoSinNotas.size() + 1;
                    while (Opcion > trabajoSinNotas.size()) {
                        System.out.println("Seleccione el trabajo para modificar: ");
                        for (int t = 0; t < trabajoSinNotas.size(); t++) {
                            System.out.println("id: " + t + " Titulo: " + trabajoSinNotas.get(t).getTitulo());
                        }
                        sc = new Scanner(System.in);
                        Opcion = sc.nextInt();
                    }
                    Iterator fechas = trabajoSinNotas.get(Opcion).getFechas().values().iterator();

                    ArrayList<String> dnis = new ArrayList<String>();
                    Enumeration clave = trabajoSinNotas.get(Opcion).getFechas().keys();
                    while (clave.hasMoreElements()) {
                        dnis.add((String) clave.nextElement());
                    }
                    boolean flag = true;

                    while (flag) {
                        int indice = 0;
                        while (fechas.hasNext()) {
                            GregorianCalendar fecha = (GregorianCalendar) fechas.next();
                            if (trabajoSinNotas.get(Opcion).getNotas().get(dnis.get(indice)) == null) {
                                System.out.println("Pulse " + indice + " si desea modificar la fecha del revisor " + congreso.obtenerNombreRevisor(dnis.get(indice)) + " cuya fecha de revision es " + fecha.get(GregorianCalendar.DATE) + "/" + (fecha.get(GregorianCalendar.MONTH) + 1) + "/" + fecha.get(GregorianCalendar.YEAR) + " El revisor no introdujo la calificacion");
                            } else {
                                System.out.println("Pulse " + indice + " si desea modificar la fecha del revisor " + congreso.obtenerNombreRevisor(dnis.get(indice)) + " cuya fecha de revision es " + fecha.get(GregorianCalendar.DATE) + "/" + (fecha.get(GregorianCalendar.MONTH) + 1) + "/" + fecha.get(GregorianCalendar.YEAR) + " y la calificacion introducida es " + trabajoSinNotas.get(Opcion).getNotas().get(dnis.get(indice)));
                            }
                            indice++;
                        }
                        System.out.println("Si desea volver pulse 3");
                        sc = new Scanner(System.in);
                        int valor = sc.nextInt();
                        if (valor == 0 || valor == 1 || valor == 2) {
                            dia = 0;
                            mes = 0;
                            anho = 0;
                            while (dia < 1 || dia > 31) {
                                System.out.println("Introduzca dia");
                                sc = new Scanner(System.in);
                                dia = sc.nextInt();
                            }
                            while (mes < 1 || mes > 12) {
                                System.out.println("Introduzca mes");
                                sc = new Scanner(System.in);
                                mes = sc.nextInt();
                            }
                            while (anho < 2011 || anho > 2013) {
                                System.out.println("Introduzca año");
                                sc = new Scanner(System.in);
                                anho = sc.nextInt();
                            }
                            GregorianCalendar fechaModificacion = new GregorianCalendar(anho, mes - 1, dia);
                            presidente.setModificacionManual(trabajoSinNotas.get(Opcion).getTitulo(), dnis.get(valor), fechaModificacion);
                            flag = false;
                        } else if (valor == 3) {
                            flag = false;
                        } else {
                            System.out.println("Opcion incorrecta");
                        }

                    }
                    break;
                case 10:
                    menuActivo = false;
                    break;
                default:
                    System.out.println("Opcion incorrecta");
            }
        }
    }

    /**
     * Ejemplo en el que se introduce una cadena de texto por teclado.
     */
    public void seleccionOpcion2(ICongreso congreso) {
        System.out.println("Introduce el dni");
        Scanner sc = new Scanner(System.in);
        String dni = sc.nextLine();
        System.out.println("Introduce el pasword");
        sc = new Scanner(System.in);
        String pasword = sc.nextLine();

        ArrayList<Ponente> pon;
        pon = congreso.getPonentes();
        Ponente ponente;

        int chequeo = 0;

        for (int i = 0; i < pon.size(); i++) {
            if (pon.get(i).getDni().equals(dni) && pon.get(i).getPasword().equals(pasword)) {
                chequeo = 1;
                ponente = pon.get(i);
                System.out.println("Logeado correctamente");
                menuPonente(congreso, ponente);
                break;
            }
        }
        if (chequeo == 0) {
            System.out.println("Login incorrecto");
        }

    }

    public void seleccionOpcion4(ICongreso congreso) {
        System.out.println("Introduce el dni");
        Scanner sc = new Scanner(System.in);
        String dni = sc.nextLine();
        System.out.println("Introduce el pasword");
        sc = new Scanner(System.in);
        String pasword = sc.nextLine();

        Revisor revisor;

        int chequeo = 0;

        for (int i = 0; i < congreso.getRevisores().size(); i++) {
            if (congreso.getRevisores().get(i).getDni().equals(dni) && congreso.getRevisores().get(i).getPasword().equals(pasword)) {
                chequeo = 1;
                revisor = congreso.getRevisores().get(i);
                System.out.println("Logeado correctamente");
                menuRevisor(congreso, revisor);
                break;
            }
        }
        if (chequeo == 0) {
            System.out.println("Login incorrecto");
        }

    }

    public void seleccionOpcion6(ICongreso congreso) {
        System.out.println("Introduce el dni");
        Scanner sc = new Scanner(System.in);
        String dni = sc.nextLine();
        System.out.println("Introduce el pasword");
        sc = new Scanner(System.in);
        String pasword = sc.nextLine();
        int chequeo = 0;
        if (congreso.getPresidente() != null) {


            if (congreso.getPresidente().getDni().equals(dni) && congreso.getPresidente().getPasword().equals(pasword)) {
                chequeo = 1;
                menuPresidente(congreso, congreso.getPresidente());
            }
            if (chequeo == 0) {
                System.out.println("Login incorrecto");
            }
        } else {
            System.out.println("No ahi ningun presidente asociado a este congreso");
        }
    }

    /**
     * Ejemplo que permite leer el contenido de un fichero
     */
      public void escrituraObjeto(Object objeto) {
        try {
            FileOutputStream fos = new FileOutputStream("fichero.txt");
            ObjectOutputStream out = new ObjectOutputStream(fos);
            if (objeto != null) {
                out.writeObject(objeto);
            }
        } catch (IOException exception) {
            System.out.println(exception.getMessage());
        }
    }
  
}


